package com.note.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.note.domain.dto.PublishNoteDTO;
import com.note.domain.dto.UpdateNoteDTO;
import com.note.domain.entity.Note;
import com.note.domain.vo.NoteStatsVO;

/**
 * <p>
 * 笔记表 服务类
 * </p>
 *
 * @author 坤哥
 * @since 2025-10-11
 */
public interface INoteService extends IService<Note> {

    /**
     * 发布笔记
     */
    void publishNote(PublishNoteDTO publishNoteDTO);

    /**
     * 获取个人笔记列表（分页）
     */
    IPage<Note> getNoteList(String title, Integer pageNum, Integer pageSize);

    /**
     * 获取所有笔记列表（分页，管理员）
     */
    IPage<Note> getAllNoteList(String title, Integer pageNum, Integer pageSize);

    /**
     * 删除笔记（软删除）
     */
    void deleteNote(Long id);

    /**
     * 更新笔记
     */
    void updateNote(UpdateNoteDTO updateNoteDTO);

    /**
     * 获取笔记统计数据
     */
    NoteStatsVO getNoteStats();
}

